home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / arts / artsmodulescommon.idl < prev    next >
Encoding:
Text File  |  2005-09-10  |  4.4 KB  |  168 lines

  1. /*
  2.  
  3.     Copyright (C) 2000-2001 Stefan Westerfeld
  4.                                 stefan@space.twc.de
  5.                   2001-2003 Matthias Kretz
  6.                             kretz@kde.org
  7.                   2002-2003 Arnold Krille
  8.                             arnold@arnoldarts.de
  9.  
  10.      This library is free software; you can redistribute it and/or
  11.      modify it under the terms of the GNU Library General Public
  12.      License as published by the Free Software Foundation; either
  13.      version 2 of the License, or (at your option) any later version.
  14.  
  15.      This library is distributed in the hope that it will be useful,
  16.      but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  18.      Library General Public License for more details.
  19.  
  20.      You should have received a copy of the GNU Library General Public License
  21.      along with this library; see the file COPYING.LIB.  If not, write to
  22.      the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  23.      Boston, MA 02111-1307, USA.
  24.  
  25. */
  26.  
  27. /*
  28. * DISCLAIMER: The interfaces in artsmodules.idl (and the derived .cc/.h files)
  29. *             DO NOT GUARANTEE BINARY COMPATIBILITY YET.
  30. *
  31. * They are intended for developers. You shouldn't expect that applications in
  32. * binary form will be fully compatibile with further releases of these
  33. * interfaces.
  34. */
  35.  
  36. #include <artsgui.idl>
  37. #include <artsflow.idl>
  38. #include <artsmidi.idl>
  39.  
  40. #include <artsmodulessynth.idl>
  41.  
  42. module Arts {
  43.  
  44. module Environment {
  45.     interface Context {
  46.         void addEntry(string name, object obj);
  47.         string lookupEntry(object obj);
  48.         void removeEntry(object obj);
  49.     };
  50.  
  51.     interface Item;
  52.  
  53.     interface Container {
  54.         attribute string dataDirectory;
  55.         attribute Context context;
  56.         readonly attribute sequence<Item> items;
  57.  
  58.         sequence<string> saveToList();
  59.         void loadFromList(sequence<string> strlist);
  60.  
  61.         void addItem(Item item);
  62.         Item createItem(string name);
  63.         void removeItem(Item item);
  64.     };
  65.  
  66.     interface Item {
  67.         /**
  68.          * true if item resides inside a container
  69.          */
  70.         readonly attribute boolean active;
  71.  
  72.         /**
  73.          * the container the item lives in
  74.          */
  75.         readonly attribute Container parent;
  76.  
  77.         /**
  78.          * called by the container to insert/remove item from/to the
  79.          * environment
  80.          */
  81.         void setContainer(Container container);
  82.  
  83.         /**
  84.          * called by the container to save the item
  85.          */
  86.         sequence<string> saveToList();
  87.  
  88.         /**
  89.          * called by the container to restore the item
  90.          */
  91.         void loadFromList(sequence<string> strlist);
  92.     };
  93.  
  94.     interface InstrumentItem : Item {
  95.         readonly attribute Arts::MidiPort port;
  96.         attribute string filename;
  97.         attribute string busname;
  98.     };
  99.  
  100.     interface InstrumentItemGuiFactory : Arts::GuiFactory {
  101.     };
  102.  
  103.     interface StereoEffectItem : Item {
  104.         attribute Arts::SynthModule effect;
  105.         attribute Arts::StereoEffectStack stack;
  106.     };
  107.  
  108.     interface MixerChannel : Arts::StereoEffect {
  109.         attribute string name;
  110.     };
  111.  
  112.     interface MixerItem : Item {
  113.         readonly attribute sequence<MixerChannel> channels;
  114.         attribute long channelCount;
  115.         attribute string name;
  116.         attribute string type;
  117.     };
  118.  
  119.     interface EffectRackItem : Item {
  120.         Arts::StereoEffect createEffect( string type, string name );
  121.         void delEffect( long pos );
  122.         void routeToMaster( long pos, boolean tomaster );
  123.         readonly attribute sequence<Arts::StereoEffect> effects;
  124.         readonly attribute long effectCount;
  125.         attribute string name;
  126.     };
  127.  
  128. };
  129.  
  130. interface MixerItemGui {
  131.     /*writeonly*/ attribute boolean active;
  132.     /*writeonly*/ attribute long channelCount;
  133.     /*writeonly*/ attribute string type;
  134.     // builds a MixerItemGui for a specific MixerItem (call this exactly once)
  135.     Widget initialize(Environment::MixerItem item);
  136. };
  137.  
  138. interface EffectRackSlot;
  139.  
  140. interface EffectRackItemGui {
  141.     void removeSlot( EffectRackSlot slot );
  142.     void routeToMaster( EffectRackSlot slot, boolean tomaster );
  143.  
  144.     attribute boolean active;
  145.     attribute string type;
  146.     /*writeonly*/ attribute boolean addeffect;
  147.  
  148.     // builds a EffectRackItemGui for a specific EffectRackItem (call this exactly once)
  149.     Widget initialize(Environment::EffectRackItem item);
  150. };
  151.  
  152. interface EffectRackSlot {
  153.     void constructor( Widget parent, Widget effect, EffectRackItemGui effectrackgui );
  154.     /*writeonly*/ attribute boolean removeslot;
  155.     /*writeonly*/ attribute boolean tomaster;
  156. };
  157.  
  158. // creates: Environment::MixerItem, SimpleMixerChannel
  159. interface MixerGuiFactory : GuiFactory {
  160. };
  161.  
  162. // creates: Environment::EffectRackItem
  163. interface EffectRackGuiFactory : GuiFactory {
  164. };
  165.  
  166. };
  167.  
  168.